package com.cskaoyan.javase.oop1._6constructor.assignment;

/**
 * 总结一下目前给成员变量赋值,在new对象过程中的手段:
 *      1.默认初始化,具有默认值
 *      2.显式赋值
 *      3.构造器赋值
 * 以后我们还会学习其它赋值手段,但不管有多少赋值手段
 * 在new对象过程中,成员变量的赋值顺序,遵循"掐头去尾"的原则:
 *      头指的是: 默认初始化具有默认值,永远最先执行,所以的其他赋值都是在默认值的基础上进行的,都是覆盖默认值
 *      尾指的是: 构造器赋值,永远最后执行,标准格式构造器的赋值,一定是稳定可靠的.
 * 于是显式赋值就在中间执行了.
 *
 * new对象过程中赋值顺序,用debug模式查看是非常好的学习手段,要求每位同学都要学会!!!
 * 构造器在执行时,也存在方法栈帧进栈的过程,是一个init方法栈帧
 *
 * @since 12:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Dog d = new Dog("长风");
        System.out.println(d.name);
    }
}

class Dog {
    String name = "大黄";
    String breed;
    double price;
    int age;

    public Dog() {
    }

    public Dog(String name) {
        this.name = name;
    }


    public Dog(String name, String breed, double price, int age) {
        this.name = name;
        this.breed = breed;
        this.price = price;
        this.age = age;
    }
}